package database

import (
	"goblog/internal/settings"
	"sync"
	"time"

	"gorm.io/gorm"
)

var (
	DB   *gorm.DB
	once sync.Once
)

func InitDB() error {
	var initErr error
	once.Do(func() {
		switch settings.Cfg.DB1.Source {
		case "mysql":
			DB, initErr = InitMySQL()
		default:
			DB, initErr = InitMySQL()
			if initErr != nil {
				return
			}
		}
		sqlDB, initErr := DB.DB()
		if initErr != nil {
			return
		}
		sqlDB.SetMaxIdleConns(10)
		sqlDB.SetMaxOpenConns(100)
		sqlDB.SetConnMaxLifetime(time.Hour)
	})
	return initErr
}
